home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / notboole.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  627 b   |  33 lines

  1. /*
  2.                                 N O T B O O L E . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. ESTRUC_ *not_boolean(e)
  8.     ESTRUC_
  9.         *e;
  10. {
  11.     unsigned
  12.         len,
  13.         *list;
  14.  
  15.     if (test_type(e, e_const))                  /* immediate value */
  16.     {
  17.         e->evalue = !(test_type(e, e_str) || e->evalue);
  18.         set_type(e, e_int | e_const);
  19.     }
  20.     else
  21.     {
  22.         fetob(e);
  23.  
  24.         len = e->truelen;                   /* cross the links */
  25.         e->truelen = e->falselen;
  26.         e->falselen = len;
  27.  
  28.         list = e->truelist;
  29.         e->truelist = e->falselist;
  30.         e->falselist = list;
  31.     }
  32.     return (e);
  33. }